home *** CD-ROM | disk | FTP | other *** search
/ AOL File Library: 4,401 to 4,500 / aol-file-protocol-4400-4401-to-4500.zip / AOLDLs / PDA-Newton Development / ND+ NS Basic Contest Winner! / NSBasic.txt < prev   
Text File  |  2014-12-08  |  10KB  |  302 lines

  1. NS BASIC Announces Winner of first program contest!
  2.  
  3. The winner of NS BASIC Corporation's first program contest is Richard Van Alstyne of New Brunswick, New Jersey. His program, "Dive", helps scuba divers with the calculations and record keeping needed to make multiple deep dives safely. It takes the Newton to a place no one would dream of taking a notebook computer: the wet, heaving deck of a dive boat.
  4.  
  5. It was selected because of its good use of a number of NS BASIC extensions: windows, buttons, handwritten input and popup pick lists. The complete listing of the program is at the end of this message.
  6.  
  7. Richard reports that he's currently putting the finishing touches on a new version of the program, where the results of each dive are saved to a file. He originally wrote the program using QuickBASIC on a PC, and reports the program came over into NS BASIC without a whole lot of trouble. You can
  8. email him at ravajr@aol.com.
  9.  
  10. Congratulations, Richard! An NS BASIC T Shirt is on its way to you.
  11.  
  12. Keep you eyes open: we'll be announcing the next contest soon. For more information or to order NS BASIC, call (416) 264-5999 or fax (416)264-5888. As always, we can also be reached on the internet at gh@hookup.net.
  13.  
  14.  
  15.  
  16. DIVE: by Richard van Alstyne
  17. You can run this on your Newton by cutting and pasting to the serial
  18. connection within NS BASIC. Be careful of the long lines!
  19.  
  20. 0001 DIM RepGro9[10],SurInt9[10],RepGro09[10],MaxDep9[10],ResNit9[10],
  21. BotTim9[10],RepGro19[10]
  22. 0010 CLS
  23. 0100 LET W0Spec.ViewBounds={top:2,bottom:14,left:4,right:235}
  24. 0101 LET W0Spec.ViewFont={family:'geneva,face:0,size:10}
  25. 0102 LET W0Spec.ViewJustify=2
  26. 0103 WINDOW W0Num,W0Spec
  27. 0104 SHOW W0Num
  28. 0105 WPRINT W0Num,"DIVE PROFILE 0.5b  RICHARD VAN ALSTYNE"
  29. 0110 LET W1Spec.ViewBounds={top:18,bottom:136,left:5,right:132}
  30. 0111 LET W1Spec.ViewFont={family:'geneva,face:0,size:10}
  31. 0112 LET W2Spec.ViewJustify=0
  32. 0113 WINDOW W1Num,W1Spec
  33. 0114 SHOW W1Num
  34. 0120 LET W2Spec.ViewBounds={top:18,bottom:30,left:136,right:234}
  35. 0121 LET W2Spec.ViewFont={family:'geneva,face:0,size:10}
  36. 0122 LET W2Spec.ViewJustify=2
  37. 0123 LET W2Spec.GOTO=2000
  38. 0124 WINDOW W2Num,W2Spec
  39. 0125 SHOW W2Num
  40. 0126 WPRINT W2Num,"REPETATIVE GROUP"
  41. 0130 LET W3Spec.ViewBounds={top:34,bottom:46,left:136,right:234}
  42. 0131 LET W3Spec.ViewFont={family:'geneva,face:0,size:10}
  43. 0132 LET W3Spec.ViewJustify=2
  44. 0133 LET W3Spec.GOTO=2050
  45. 0134 WINDOW W3Num,W3Spec
  46. 0135 SHOW W3Num
  47. 0136 WPRINT W3Num,"SURFACE INTERVAL"
  48. 0140 LET W4Spec.ViewBounds={top:50,bottom:62,left:136,right:234}
  49. 0141 LET W4Spec.ViewFont={family:'geneva,face:0,size:10}
  50. 0142 LET W4Spec.ViewJustify=2
  51. 0143 LET W4Spec.GOTO=2100
  52. 0144 WINDOW W4Num,W4Spec
  53. 0145 SHOW W4Num
  54. 0146 WPRINT W4Num,"MAXIMUM DEPTH"
  55. 0150 LET W5Spec.ViewBounds={top:66,bottom:78,left:136,right:234}
  56. 0151 LET W5Spec.ViewFont={family:'geneva,face:0,size:10}
  57. 0152 LET W5Spec.ViewJustify=2
  58. 0153 LET W5Spec.GOTO=2150
  59. 0154 WINDOW W5Num,W5Spec
  60. 0155 SHOW W5Num
  61. 0156 WPRINT W5Num,"BOTTOM TIME"
  62. 0160 LET W6Spec.ViewBounds={top:82,bottom:94,left:136,right:234}
  63. 0161 LET W6Spec.ViewFont={family:'geneva,face:0,size:10}
  64. 0162 LET W6Spec.ViewJustify=2
  65. 0163 LET W6Spec.GOTO=0900
  66. 0164 WINDOW W6Num,W6Spec
  67. 0165 SHOW W6Num
  68. 0166 WPRINT W6Num,"EVALUATE"
  69. 0170 LET W7Spec.ViewBounds={top:98,bottom:110,left:136,right:164}
  70. 0171 LET W7Spec.ViewFont={family:'geneva,face:0,size:10}
  71. 0172 LET W7Spec.ViewJustify=2
  72. 0173 LET W7Spec.GOTO=2200
  73. 0174 WINDOW W7Num,W7Spec
  74. 0175 SHOW W7Num
  75. 0176 WPRINT W7Num,"PREV"
  76. 0180 LET W8Spec.ViewBounds={top:98,bottom:110,left:168,right:195}
  77. 0181 LET W8Spec.ViewFont={family:'geneva,face:0,size:10}
  78. 0182 LET W8Spec.ViewJustify=2
  79. 0183 LET W8Spec.GOTO=2210
  80. 0184 WINDOW W8Num,W8Spec
  81. 0185 SHOW W8Num
  82. 0186 WPRINT W8Num,"NEXT"
  83. 0190 LET DivNum=0
  84. 0191 LET RepGro=" "
  85. 0192 LET SurInt=0
  86. 0193 LET RepGro0=" "
  87. 0194 LET MaxDep=0
  88. 0195 LET ResNit=0
  89. 0196 LET BotTim=0
  90. 0197 LET RepGro1=" "
  91. 0198 LET DivInc=0
  92. 0199 GOTO 0920
  93. 0900 ON MaxDepLev GOSUB
  94. 0999,0999,0999,0999,0999,0980,0982,0984,0986,0988,0990,0992,0994,0996,0998
  95. 0901 LET ResNit=STRINGTONUMBER(t0[STRPOS("ABCDEFGHIJKLM",RepGro0,0)])
  96. 0902 LET BotTim=BotTim-ResNit
  97. 0920 LET DivSpe="Dive #"&DivNum&":"&chr(13)
  98. 0921 LET DivSpe=DivSpe&" Repetative Group="&RepGro
  99. 0922 LET DivSpe=DivSpe&chr(13)
  100. 0923 LET DivSpe=DivSpe&" Surface Interval="&SurInt
  101. 0924 LET DivSpe=DivSpe&chr(13)
  102. 0925 LET DivSpe=DivSpe&" Repetative Group="&RepGro0
  103. 0926 LET DivSpe=DivSpe&chr(13)
  104. 0927 LET DivSpE=DivSpe&" Maximum Depth="&MaxDep
  105. 0928 LET DivSpe=DivSpe&chr(13)
  106. 0929 LET DivSpe=DivSpe&" Residual Nitrogen="&ResNit
  107. 0930 LET DivSpe=DivSpe&chr(13)
  108. 0931 LET DivSpe=DivSpe&" Bottom Time="
  109. 0932 IF BotTim<0 THEN LET DivSpe=DivSpe&"**"
  110. 0933 LET DivSpe=DivSpe&BotTim
  111. 0934 LET DivSpe=DivSpe&chr(13)
  112. 0935 LET DivSpe=DivSpe&" Total Bottom Time="&ResNit+BotTim
  113. 0936 LET DivSpe=DivSpe&chr(13)
  114. 0937 LET DivSpe=DivSpe&" Repetative Group="&RepGro1
  115. 0938 WPRINT W1Num,DivSpe
  116. 0939 STOP
  117. 0980 LET
  118. t0=["7","17","25","37","49","61","73","87","101","116","138","161","187"]
  119. 0981 RETURN
  120. 0982 LET t0=["6","13","21","29","38","47","56","66","76","87","99","111","124"]
  121. 0983 RETURN
  122. 0984 LET t0=["5","11","17","24","30","36","44","52","61","70","79","88","97"]
  123. 0985 RETURN
  124. 0986 LET t0=["4","9","15","20","26","31","37","43","50","57","64","72","80"]
  125. 0987 RETURN
  126. 0988 LET t0=["4","8","13","18","23","28","32","38","43","48","54","61","68"]
  127. 0989 RETURN
  128. 0990 LET t0=["3","7","11","16","20","24","29","33","38","43","47","53","58"]
  129. 0991 RETURN
  130. 0992 LET t0=["3","7","10","14","18","22","26","30","34","38","43","48","52"]
  131. 0993 RETURN
  132. 0994 LET t0=["3","6","10","13","16","20","24","27","31","34","38","42","47"]
  133. 0995 RETURN
  134. 0996 LET t0=["3","6","9","12","15","18","21","25","28","32","35","39","43"]
  135. 0997 RETURN
  136. 0998 LET t0=["3","6","8","11","13","16","19","22","25","28","31","35","38"]
  137. 0999 RETURN
  138. 1000 HWINPUT Inp$,Pro,PopUp
  139. 1001 LET Fla=NIL
  140. 1002 FOR t=0 TO Lim
  141. 1003   IF Inp$<>PopUp[t] THEN GOTO 1006
  142. 1004   LET Fla=t
  143. 1005   LET t=Lim
  144. 1006 NEXT t
  145. 1007 IF Fla=NIL THEN GOTO 1000
  146. 1008 RETURN
  147. 1100 HWINPUT Inp$,Pro,PopUp
  148. 1101 LET Inp=STRINGTONUMBER(Inp$)
  149. 1102 LET Fla=NIL
  150. 1103 FOR t=0 TO Lim
  151. 1104   IF Inp>STRINGTONUMBER(PopUp[t]) THEN GOTO 1107
  152. 1105   LET Fla=t
  153. 1106   LET t=Lim
  154. 1107 NEXT t
  155. 1108 IF Fla=NIL THEN GOTO 1100
  156. 1109 RETURN
  157. 2000 LET Pro="Please select Repetative Group"
  158. 2001 LET PopUp=["A","B","C","D","E","F","G","H","I","J","L","M"]
  159. 2002 LET Lim=12
  160. 2003 GOSUB 1000
  161. 2007 LET RepGro=Inp$
  162. 2008 LET RepGroLev=Fla+1
  163. 2009 STOP
  164. 2050 LET Pro="Please select Surface Interval"
  165. 2051 ON RepGroLev GOSUB
  166. 2053 GOSUB 1100
  167. 2057 LET SurInt=STRINGTONUMBER(PopUp[Fla-1])
  168. 2058 LET RepGro0=SUBSTR("ABCDEFGHIJKLM",RepGroLev-Fla,1)
  169. 2059 STOP
  170. 2100 LET Pro="Please select Maximum Depth"
  171. 2101 LET
  172. PopUp=["15","20","25","30","35","40","50","60","70","80","90","100","110","1
  173. 20","130"]
  174. 2102 LET Lim=14
  175. 2103 GOSUB 1100
  176. 2107 LET MaxDep=STRINGTONUMBER(PopUp[Fla])
  177. 2108 LET MaxDepLev=Fla+1
  178. 2109 STOP
  179. 2150 LET Pro="Please select Bottom Time"
  180. 2151 ON MaxDepLev GOSUB
  181. 2152 GOSUB 1100
  182. 2157 LET BotTim=STRINGTONUMBER(PopUp[Fla])
  183. 2158 LET RepGro1=SUBSTR("ABCDEFGHIJKLM",Fla,1)
  184. 2159 STOP
  185. 2200 LET DivInc=0
  186. 2201 IF DivNum>0 THEN LET DivInc=-1
  187. 2202 GOTO 2220
  188. 2210 LET DivInc=0
  189. 2211 IF DivNum<9 THEN LET DivInc=1
  190. 2220 LET RepGro9[DivNum]=RepGro
  191. 2221 LET SurInt9[DivNum]=SurInt
  192. 2222 LET RepGro09[DivNum]=RepGro0
  193. 2223 LET MaxDep9[DivNum]=MaxDep
  194. 2224 LET ResNit9[DivNum]=ResNit
  195. 2225 LET BotTim9[DivNum]=BotTim
  196. 2226 LET RepGro19[DivNum]=RepGro1
  197. 2227 LET DivNum=DivNum+DivInc
  198. 2228 LET RepGro=RepGro9[DivNum]
  199. 2229 LET SurInt=SurInt9[DivNum]
  200. 2230 LET RepGro0=RepGro09[DivNum]
  201. 2231 LET MaxDep=MaxDep9[DivNum]
  202. 2232 LET ResNit=ResNit9[DivNum]
  203. 2233 LET BotTim=BotTim9[DivNum]
  204. 2234 LET RepGro1=RepGro19[DivNum]
  205. 2235 GOTO 0920
  206. 9011 LET PopUp=["10","999"]
  207. 9012 LET Lim=10
  208. 9013 RETURN
  209. 9021 LET PopUp=["10","200","999"]
  210. 9022 LET Lim=2
  211. 9023 RETURN
  212. 9031 LET PopUp=["10","100","289","999"]
  213. 9032 LET Lim=3
  214. 9033 RETURN
  215. 9041 LET PopUp=["10","70","159","349","999"]
  216. 9042 LET Lim=4
  217. 9043 RETURN
  218. 9051 LET PopUp=["10","55","118","203","393","999"]
  219. 9052 LET Lim=5
  220. 9053 RETURN
  221. 9061 LET PopUp=["10","46","90","149","238","426","999"]
  222. 9062 LET Lim=6
  223. 9063 RETURN
  224. 9071 LET PopUp=["10","41","76","120","179","266","456","999"]
  225. 9072 LET Lim=7
  226. 9073 RETURN
  227. 9081 LET PopUp=["10","37","67","102","144","201","290","480","999"]
  228. 9082 LET Lim=8
  229. 9083 RETURN
  230. 9091 LET PopUp=["10","34","60","90","123","165","224","313","502","999"]
  231. 9092 LET Lim=9
  232. 9093 RETURN
  233. 9101 LET PopUp=["10","32","55","80","108","141","185","243","341","521","999"]
  234. 9103 RETURN
  235. 9111 LET
  236. PopUp=["10","29","50","72","96","124","159","202","260","349","539","999"]
  237. 9112 LET Lim=11
  238. 9113 RETURN
  239. 9121 LET
  240. PopUp=["10","27","46","65","86","110","140","174","217","276","363","553","9
  241. 99"]
  242. 9122 LET Lim=12
  243. 9123 RETURN
  244. 9131 LET
  245. PopUp=["10","26","43","60","79","100","126","155","189","233","290","379","5
  246. 69","999"]
  247. 9132 LET Lim=13
  248. 9133 RETURN
  249. 9411 LET PopUp=["35","70","110","160","225","350"]
  250. 9412 LET Lim=5
  251. 9413 RETURN
  252. 9421 LET PopUp=["25","50","75","100","135","180","240","325"]
  253. 9422 LET Lim=7
  254. 9423 RETURN
  255. 9431 LET PopUp=["20","35","55","75","100","125","160","195","245","315"]
  256. 9432 LET Lim=9
  257. 9433 RETURN
  258. 9441 LET PopUp=["15","30","45","60","75","90","120","145","170","205","250"]
  259. 9442 LET Lim=10
  260. 9443 RETURN
  261. 9451 LET
  262. PopUp=["5","15","25","40","50","60","80","100","120","140","160","190","220"
  263. ]
  264. 9452 LET Lim=12
  265. 9453 RETURN
  266. 9461 LET PopUp=["5","15","25","30","40","50","70","80","100","110","130","150"]
  267. 9462 LET Lim=11
  268. 9463 RETURN
  269. 9471 LET PopUp=["0","10","15","25","30","40","50","60","70","80"]
  270. 9472 LET Lim=9
  271. 9473 RETURN
  272. 9481 LET PopUp=["0","10","15","20","25","30","40","50"]
  273. 9482 LET Lim=7
  274. 9483 RETURN
  275. 9491 LET PopUp=["0","5","10","15","20","30","35","40"]
  276. 9492 LET Lim=7
  277. 9493 RETURN
  278. 9501 LET PopUp=["0","5","10","15","20","25","30"]
  279. 9502 LET Lim=6
  280. 9503 RETURN
  281. 9511 LET PopUp=["0","5","10","12","15","20","25"]
  282. 9512 LET Lim=6
  283. 9513 RETURN
  284. 9521 LET PopUp=["0","5","7","10","15","20"]
  285. 9522 LET Lim=5
  286. 9523 RETURN
  287. 9531 LET PopUp=["0","0","5","10","13"]
  288. 9532 LET Lim=4
  289. 9533 RETURN
  290. 9541 LET PopUp=["0","0","5","10"]
  291. 9542 LET Lim=3
  292. 9543 RETURN
  293. 9551 LET PopUp=["0","0","5"]
  294. 9552 LET Lim=2
  295. 9553 RETURN
  296. *
  297.  
  298. George W.P. Henne  gh@hookup.net
  299.  
  300. NS BASIC Corporation: BASIC for the Newton!
  301. Orders: (416) 264-5999 fax (416) 264-5888
  302.